﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Printing;

namespace testePrintForm
{
    public class print2:Form
    {
        private Font mainTextFont = new Font("Times New Roman", 14);
    private Font subTextFont = new Font("Times New Roman", 12);
    private PageSettings storedPageSettings;

    public print2() {
        InitializeComponent();
    }

    private void PaintDocument(Graphics g) {
        g.PageUnit = GraphicsUnit.Point;
        g.DrawString("Simple Printing Sample",
                     this.mainTextFont,
                     Brushes.Black,
                     new Rectangle(10, 20, 180, 30));
        g.DrawRectangle(Pens.Blue,
                        new Rectangle(new Point(10, 100), new Size(100, 50)));
    }

    private void Form1_Paint(object sender, PaintEventArgs e) {
        Graphics g = e.Graphics;
        PaintDocument(g);
    }

    private void menuFilePageSetup_Click(object sender, EventArgs e) {
        PageSetupDialog psDlg = new PageSetupDialog();
        if (this.storedPageSettings == null)
            this.storedPageSettings = new PageSettings();
        psDlg.PageSettings = this.storedPageSettings;
        psDlg.ShowDialog();

    }

    private void WriteMetricsToConsole(PrintPageEventArgs ev) {
        Graphics g = ev.Graphics;
        Console.WriteLine("ev.PageSettings.PaperSize: " + ev.PageSettings.PaperSize);
        Console.WriteLine("ev.PageSettings.PrinterResolution: " + ev.PageSettings.PrinterResolution);
        Console.WriteLine("ev.PageSettings.PrinterSettings.LandscapeAngle: " + ev.PageSettings.PrinterSettings.LandscapeAngle);
        Console.WriteLine("ev.PageSettings.Bounds: " + ev.PageSettings.Bounds);
        Console.WriteLine("ev.PageBounds: " + ev.PageBounds);
        Console.WriteLine("ev.PageSettings.Margins: " + ev.PageSettings.Margins);
        Console.WriteLine("ev.MarginBounds: " + ev.MarginBounds);
        Console.WriteLine("Horizontal resolution: " + g.DpiX);
        Console.WriteLine("Vertical resolution: " + g.DpiY);
        g.SetClip(ev.PageBounds);
        Console.WriteLine("g.VisibleClipBounds: " + g.VisibleClipBounds);
        SizeF drawingSurfaceSize = new SizeF( g.VisibleClipBounds.Width * g.DpiX / 100,g.VisibleClipBounds.Height * g.DpiY / 100);
        Console.WriteLine("Drawing Surface Size in Pixels: " + drawingSurfaceSize);
    }

    protected void PrintPageEventHandler(Object obj, PrintPageEventArgs ev) {
        WriteMetricsToConsole(ev);
        Graphics g = ev.Graphics;
        PaintDocument(g);
        ev.HasMorePages = false;
    }

    private void menuFilePrint_Click(object sender, EventArgs e) {
        PrintDocument pd = new PrintDocument();
        pd.PrintPage += new PrintPageEventHandler(this.PrintPageEventHandler);

        if (this.storedPageSettings != null)
            pd.DefaultPageSettings = this.storedPageSettings;
        PrintDialog dlg = new PrintDialog();
        dlg.Document = pd;
        DialogResult result = dlg.ShowDialog();
        if (result == System.Windows.Forms.DialogResult.OK)
            pd.Print();
    }

    private void menuFilePrintPreview_Click(object sender, EventArgs e) {
        PrintDocument pd = new PrintDocument();
        pd.PrintPage += new PrintPageEventHandler(this.PrintPageEventHandler);

        if (this.storedPageSettings != null)
            pd.DefaultPageSettings = this.storedPageSettings;
        PrintPreviewDialog dlg = new PrintPreviewDialog();
        dlg.Document = pd;
        dlg.ShowDialog();
    }
    private void InitializeComponent() {
        this.menuStrip1 = new System.Windows.Forms.MenuStrip();
        this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
        this.menuFilePageSetup = new System.Windows.Forms.ToolStripMenuItem();
        this.menuFilePrintPreview = new System.Windows.Forms.ToolStripMenuItem();
        this.menuFilePrint = new System.Windows.Forms.ToolStripMenuItem();
        this.menuStrip1.SuspendLayout();
        this.SuspendLayout();
        this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.fileToolStripMenuItem});
        this.menuStrip1.Location = new System.Drawing.Point(0, 0);
        this.menuStrip1.Size = new System.Drawing.Size(292, 25);
        this.menuStrip1.Text = "menuStrip1";
        this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.menuFilePageSetup,
            this.menuFilePrintPreview,
            this.menuFilePrint});
        this.fileToolStripMenuItem.Text = "File";
        this.menuFilePageSetup.Text = "Page Setup";
        this.menuFilePageSetup.Click += new System.EventHandler(this.menuFilePageSetup_Click);
        this.menuFilePrintPreview.Text = "Print Preview";
        this.menuFilePrintPreview.Click += new System.EventHandler(this.menuFilePrintPreview_Click);
        this.menuFilePrint.Text = "Print";
        this.menuFilePrint.Click += new System.EventHandler(this.menuFilePrint_Click);
        this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
        this.BackColor = System.Drawing.SystemColors.Window;
        this.ClientSize = new System.Drawing.Size(292, 268);
        this.Controls.Add(this.menuStrip1);
        this.MainMenuStrip = this.menuStrip1;
        this.Text = "SimplePrintingExample";
        this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);
        this.menuStrip1.ResumeLayout(false);
        this.ResumeLayout(false);
        this.PerformLayout();
    }

    private System.Windows.Forms.MenuStrip menuStrip1;
    private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
    private System.Windows.Forms.ToolStripMenuItem menuFilePageSetup;
    private System.Windows.Forms.ToolStripMenuItem menuFilePrintPreview;
    private System.Windows.Forms.ToolStripMenuItem menuFilePrint;    
    }
}
